

<!DOCTYPE html>
<html lang="zh-CN" color-mode=light>
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>计算机网络 - 唱跳rap</title>
  <meta name="apple-mobile-web-app-capable" content="yes" />
  <meta name="apple-mobile-web-app-status-bar-style" content="black-translucent">
  <meta name="google" content="notranslate" />
  
  <meta name="description" content="计算机网络各层协议对对比应用层：dns http sm...">
  <meta name="author" content="东子">
  <link rel="icon" href="/images/icons/icon-29.png" type="image/png" sizes="16x16">
  <link rel="icon" href="/images/icons/icon-29@2x.png" type="image/png" sizes="32x32">
  <link rel="apple-touch-icon" href="/images/icons/icon-1024.png" sizes="180x180">
  <meta rel="mask-icon" href="/images/icons/stun-logo.svg" color="#333333">
  
    <meta rel="msapplication-TileImage" content="/images/icons/icon-1024.png">
    <meta rel="msapplication-TileColor" content="#000000">
  

  
<link rel="stylesheet" href="/css/style.css">


  
    
<link rel="stylesheet" href="https://at.alicdn.com/t/font_1445822_p6ry5n7lrr.css">

  

  
    
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/fancybox/3.5.7/jquery.fancybox.min.css">

  

  
    
      
        
        
<link rel="stylesheet" href="https://cdn.bootcss.com/highlight.js/9.18.1/styles/xcode.min.css" name="highlight-style" mode="light">

      
        
        
<link rel="stylesheet" href="https://cdn.bootcss.com/highlight.js/9.18.1/styles/solarized-dark.min.css" name="highlight-style" mode="dark">

      
  

  <script>
    var CONFIG = window.CONFIG || {};
    var ZHAOO = window.ZHAOO || {};
    CONFIG = {
      isHome: false,
      fancybox: true,
      pjax: false,
      loading: {
        gif: '',
        lottie: ''
      },
      lazyload: {
        enable: true,
        only_post: 'false',
        loading: {
          gif: '',
          lottie: ''
        }
      },
      donate: {
        enable: false,
        alipay: 'https://pic.izhaoo.com/alipay.jpg',
        wechat: 'https://pic.izhaoo.com/wechat.jpg'
      },
      galleries: {
        enable: false
      },
      fab: {
        enable: true,
        always_show: false
      },
      carrier: {
        enable: true
      },
      daovoice: {
        enable: false
      },
      preview: {
        background: {
          default: '',
          api: 'https://api.paugram.com/bing/'
        },
        motto: {
          default: '我在开了灯的床头下，想问问自己的心啊。',
          typing: true,
          api: 'https://v2.jinrishici.com/one.json',
          data_contents: '["data","content"]'
        },
      },
      qrcode: {
        enable: true,
        type: 'url',
        image: 'https://pic.izhaoo.com/weapp-code.jpg',
      },
      toc: {
        enable: true
      },
      scrollbar: {
        type: 'default'
      },
      notification: {
        enable: false,
        delay: 4500,
        list: '',
        page_white_list: '',
        page_black_list: ''
      },
      search: {
        enable: false,
        path: ''
      }
    }
  </script>

  

  

<meta name="generator" content="Hexo 6.3.0"></head>

<body class="lock-screen">
  <div class="loading" id="loading"></div>
  
    


  <nav class="navbar">
    <div class="left">
      
        <i class="iconfont iconhome j-navbar-back-home"></i>
      
      
        <i class="iconfont iconqrcode j-navbar-qrcode"></i>
      
      
        <i class="iconfont iconmoono" id="color-toggle" color-toggle="light"></i>
      
      
    </div>
    <div class="center">计算机网络</div>
    <div class="right">
      <i class="iconfont iconmenu j-navbar-menu"></i>
    </div>
    
      <div id="qrcode-navbar"></div>
    
  </nav>

  
  

<nav class="menu">
  <div class="menu-container">
    <div class="menu-close">
      <i class="iconfont iconbaseline-close-px"></i>
    </div>
    <ul class="menu-content"><li class="menu-item">
        <a href="/ " class="underline "> 首页</a>
      </li><li class="menu-item">
        <a href="/archives/ " class="underline "> 归档</a>
      </li><li class="menu-item">
        <a href="/categories/ " class="underline "> 分类</a>
      </li><li class="menu-item">
        <a href="/about/ " class="underline "> 关于</a>
      </li></ul>
    
      <div class="menu-copyright"><p>Powered by <a target="_blank" href="https://gitee.com/comebackearly">东子</a>  | 爷-青结~~</p></div>
    
  </div>
</nav>
  <main id="main">
  <div class="article-wrap">
    <div class="row container">
      <div class="col-xl-3"></div>
      <div class="col-xl-6"><article class="article">
  <div class="wrap">
    <section class="head">
  <img   class="lazyload" data-original="https://x0.ifengimg.com/res/2021/5A6A888CF7E7ECDA1EDCA55DA45576C4795263F3_size682_w773_h550.png" src=""  draggable="false">
  <div class="head-mask">
    <h1 class="head-title">计算机网络</h1>
    <div class="head-info">
      <span class="post-info-item"><i class="iconfont iconcalendar"></i>六月 01, 2022</span>
      
      <span class="post-info-item"><i class="iconfont iconfont-size"></i>4433</span>
    </div>
  </div>
</section>
    <section class="main">
      <section class="content">
        
        <h1 id="计算机网络"><a href="#计算机网络" class="headerlink" title="计算机网络"></a>计算机网络</h1><h2 id="各层协议对对比"><a href="#各层协议对对比" class="headerlink" title="各层协议对对比"></a>各层协议对对比</h2><p><strong>应用层：dns http smtp协议</strong></p>
<p><strong>运输层主要使用以下两种协议：</strong></p>
<ul>
<li><p>传输控制协议 TCP：面向连接的协议，提供可靠的数据传输服务。</p>
</li>
<li><p>用户数据报协议 UDP：无连接的协议，不提供可靠交付。</p>
</li>
</ul>
<p><strong>网络层：</strong> </p>
<ul>
<li><p>ip协议</p>
</li>
<li><p>地址解析协议 ARP (Address Resolution Protocol)</p>
</li>
<li><p>网际控制报文协议 ICMP (Internet Control Message Protocol</p>
</li>
</ul>
<p><strong>数据链路层</strong>：两台设备之间的数据传输，可以看成是在一条管道上进行的，传送的数据单位是帧（封装成帧 透明传输 差错检测）</p>
<h3 id="TCP与UDP"><a href="#TCP与UDP" class="headerlink" title="TCP与UDP"></a>TCP与UDP</h3><ul>
<li><p><strong>TCP&#x2F;IP即传输控制协议，是面向连接的协议，发送数据前要先建立连接，TCP提供可靠的服务，也就是说，通过TCP连接传输的数据不会丢失，没有重复，并且按顺序到达。（类似于打电话）</strong></p>
</li>
<li><p><strong>UDP它是属于TCP&#x2F;IP协议族中的一种。是无连接的协议，发送数据前不需要建立连接，是没有可靠性的协议。</strong></p>
</li>
</ul>
<h2 id="运行在TCP协议上的协议"><a href="#运行在TCP协议上的协议" class="headerlink" title="运行在TCP协议上的协议"></a><strong>运行在TCP协议上的协议</strong></h2><p><strong>HTTP</strong>（Hypertext Transfer Protocol，超文本传输协议<br><strong>HTTPS</strong>（HTTP over SSL，安全超文本传输协议）,HTTP协议的安全版本。端口：443<br><strong>FTP</strong>（File Transfer Protocol，文件传输协议），用于文件传输。端口：21<br><strong>SMTP</strong>（Simple Mail Transfer Protocol，简单邮件传输协议），用来发送电子邮件。端口：25</p>
<h2 id="运行在UDP协议上的协议"><a href="#运行在UDP协议上的协议" class="headerlink" title="运行在UDP协议上的协议"></a><strong>运行在UDP协议上的协议</strong></h2><p>DNS（Domain Name Service，域名服务），用于完成地址查找，邮件转发等工作。<br>DHCP（Dynamic Host Configuration Protocol，动态主机配置协议），动态配置IP地址。</p>
<h2 id="TCP的三次握手"><a href="#TCP的三次握手" class="headerlink" title="TCP的三次握手"></a>TCP的三次握手</h2><p><strong>三次握手的具体细节：客户端向服务端发送SYN -&gt; 服务端返回SYN,ACK -&gt; 客户端发送ACK</strong></p>
<p><img   class="lazyload" data-original="https://img-blog.csdnimg.cn/364f2f786572458986deb176143b8582.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0x6eTQxMDk5Mg==,size_16,color_FFFFFF,t_70" src=""  alt="在这里插入图片描述"></p>
<p><strong>三次握手的目的是建立可靠的通信信道，主要的目的就是双方确认自己与对方的发送与接收机能正常。</strong></p>
<h2 id="为什么要三次握手："><a href="#为什么要三次握手：" class="headerlink" title="为什么要三次握手："></a>为什么要三次握手：</h2><p>双方都确认接受发送  </p>
<ul>
<li><strong>第一次握手：客户什么都不能确认；服务器确认了对方发送正常</strong></li>
<li><strong>第二次握手：客户确认了：自己发送、接收正常，对方发送、接收正常；服务器确认 了：自己接收正常，对方发送正常</strong></li>
<li><strong>第三次握手：客户确认了：自己发送、接收正常，对方发送、接收正常；服务器确认 了：自己发送、接收正常，对方发送接收正常 所以三次握手就能确认双发收发功能都</strong>正常，缺一不可。</li>
</ul>
<h2 id="TCP的四次挥手"><a href="#TCP的四次挥手" class="headerlink" title="TCP的四次挥手"></a>TCP的四次挥手</h2><p><strong>双方都确认对方关闭</strong></p>
<p><img   class="lazyload" data-original="https://img-blog.csdnimg.cn/e4ec96065c184674a8da0f2807ce206f.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0x6eTQxMDk5Mg==,size_16,color_FFFFFF,t_70" src=""  alt="在这里插入图片描述"></p>
<ul>
<li><strong>客户对服务器发送了关闭连接请求，</strong></li>
<li><strong>服务器收到客户的关闭连接请求后，回复一个确认收到的消息</strong></li>
<li><strong>服务器确定不再给客户发消息后，对客户发送，准备关闭连接的消息</strong></li>
<li><strong>客户收到服务器要关闭连接的消息给服务器发送：已收到关闭连接的消息。</strong></li>
</ul>
<p><strong>为什么不能把服务器发送的ACK和FIN合并起来，变成三次挥手（CLOSE_WAIT状态意义是什么）？</strong><br>因为服务器<strong>收到客户端断开连接的请求</strong>时，可能<strong>还有一些数据没有发完</strong>，这时先回复ACK，表示接收到了断开连接的请求。等到数据发完之后再发FIN，断开服务器到客户端的数据传</p>
<h2 id="TCP-协议如何保证可靠传输"><a href="#TCP-协议如何保证可靠传输" class="headerlink" title="TCP 协议如何保证可靠传输"></a>TCP 协议如何保证可靠传输</h2><ul>
<li><p><strong>停止等待：每发完一个分组就停止发送，等待对方确认。在收到确认后再发下一个分组。</strong></p>
</li>
<li><p><strong>超时重传：当TCP发出一个段后，它启动一个定时器，等待目的端确认收到这个报文段。如果不能及时收到一个确认，将重发这个报文段；</strong></p>
</li>
<li><p><strong>流量控制：TCP连接的每一方都有固定大小的缓冲空间。TCP的接收端只允许另一端发送接收端缓冲区所能接纳的数据，这可以防止较快主机致使较慢主机的缓冲区溢出，这就是流量控制。TCP使用的流量控制协议是可变大小的滑动窗口协议。</strong></p>
</li>
<li><p><strong>拥塞控制： 当网络拥塞时，可能会造成网络的拥堵，甚至网络瘫痪，TCP会减少数据的发送。</strong></p>
</li>
<li><p>数据包校验</p>
</li>
</ul>
<h2 id="HTTP网络协议"><a href="#HTTP网络协议" class="headerlink" title="HTTP网络协议"></a>HTTP网络协议</h2><blockquote>
<p>HTTP最初是为了支持万维网的发展而出现。最早的版本是0.9版，只支持<strong>GET</strong>方法。后来，HTTP&#x2F;1.0发布，它引入了<strong>POST、HEAD</strong>等方法，并且定义了一些状态码和首部字段。HTTP&#x2F;1.0还支持虚拟主机，这使得<strong>多个网站可以共享同一个IP地址</strong>。</p>
<p>随着互联网的快速发展，HTTP&#x2F;1.0已经无法满足日益增长的需求。因此，在1999年，HTTP&#x2F;1.1发布，它引入了<strong>持久连接</strong>、分块传输编码、<strong>缓存控制</strong>等特性，极大地提高了HTTP的效率和<strong>可扩展性</strong>。</p>
<p>近年来，HTTP&#x2F;2和HTTP&#x2F;3相继问世。HTTP&#x2F;2采用了<strong>多路复用技术</strong>，将多个请求打包在一个TCP连接中，提高了并发处理能力；HTTP&#x2F;3则采用了QUIC协议，使得<strong>HTTP请求可以直接通过UDP发送，以降低网络延迟</strong>。</p>
<p>总之，HTTP协议的发展史就是从简单到复杂、从不规范到标准化的过程。HTTP的进化为互联网的发展做出了重要贡献，同时也促进了Web应用的快速发展和创新。</p>
</blockquote>
<p>HTTP是一个用于在Web浏览器和服务器之间传输数据的协议。HTTP是基于TCP&#x2F;IP协议的，它使用标准的端口号80来传输数据。</p>
<ul>
<li><p><strong>http三个注意</strong></p>
<ul>
<li><strong>HTTP 是无连接</strong>：无连接的含义是限制每次连接只处理一个请求，服务器处理完客户的请求，并收到客户的应答后，即断开连接，采用这种方式可以节省传输时间。</li>
<li><strong>HTTP 是媒体独立的</strong>：这意味着，只要客户端和服务器知道如何处理的数据内容，任何类型的数据都可以通过HTTP发送，客户端以及服务器指定使用适合的 MIME-type 内容类型。</li>
<li><strong>HTTP 是无状态</strong>：HTTP 协议是无状态协议，无状态是指协议对于事务处理没有记忆能力，缺少状态意味着如果后续处理需要前面的信息，则它必须重传，这样可能导致每次连接传送的数据量增大，另一方面，在服务器不需要先前信息时它的应答就较快。</li>
</ul>
</li>
<li><p><strong>http消息结构</strong></p>
<p><strong>请求行</strong>，<strong>请求头部</strong>，<strong>空行</strong>，<strong>请求数据</strong></p>
<p><strong><img   class="lazyload" data-original="https://www.runoob.com/wp-content/uploads/2013/11/2012072810301161.png" src=""  alt="img"></strong></p>
</li>
</ul>
<p>​		<strong>状态行、响应头、空行，响应正文</strong></p>
<p><img   class="lazyload" data-original="https://www.runoob.com/wp-content/uploads/2013/11/httpmessage.jpg" src=""  alt="img"></p>
<figure class="highlight apache"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line"><span class="attribute">GET</span> /hello.txt HTTP/<span class="number">1</span>.<span class="number">1</span></span><br><span class="line"><span class="attribute">User</span>-Agent: curl/<span class="number">7</span>.<span class="number">16</span>.<span class="number">3</span> libcurl/<span class="number">7</span>.<span class="number">16</span>.<span class="number">3</span> OpenSSL/<span class="number">0</span>.<span class="number">9</span>.<span class="number">7</span>l zlib/<span class="number">1</span>.<span class="number">2</span>.<span class="number">3</span></span><br><span class="line"><span class="attribute">Host</span>: www.example.com</span><br><span class="line"><span class="attribute">Accept</span>-Language: en, mi</span><br></pre></td></tr></table></figure>

<figure class="highlight http"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br></pre></td><td class="code"><pre><span class="line"><span class="meta">HTTP/1.1</span> <span class="number">200</span> OK</span><br><span class="line"><span class="attribute">Date</span><span class="punctuation">: </span>Mon, 27 Jul 2009 12:28:53 GMT</span><br><span class="line"><span class="attribute">Server</span><span class="punctuation">: </span>Apache</span><br><span class="line"><span class="attribute">Last-Modified</span><span class="punctuation">: </span>Wed, 22 Jul 2009 19:15:56 GMT</span><br><span class="line"><span class="attribute">ETag</span><span class="punctuation">: </span>&quot;34aa387-d-1568eb00&quot;</span><br><span class="line"><span class="attribute">Accept-Ranges</span><span class="punctuation">: </span>bytes</span><br><span class="line"><span class="attribute">Content-Length</span><span class="punctuation">: </span>51</span><br><span class="line"><span class="attribute">Vary</span><span class="punctuation">: </span>Accept-Encoding</span><br><span class="line"><span class="attribute">Content-Type</span><span class="punctuation">: </span>text/plain</span><br></pre></td></tr></table></figure>

<ul>
<li><p><strong>请求方法</strong></p>
<p>HTTP1.0 定义了三种请求方法： GET, POST 和 HEAD 方法。</p>
<p>HTTP1.1 新增了六种请求方法：OPTIONS、PUT、PATCH、DELETE、TRACE 和 CONNECT 方法。</p>
</li>
<li><p>状态码</p>
<p><img   class="lazyload" data-original="https://gitee.com/yuan-wendong/picture-bed/raw/master/image-20230321095055819.png" src=""  alt="image-20230321095055819"></p>
</li>
</ul>
<h2 id="http版本的对比"><a href="#http版本的对比" class="headerlink" title="http版本的对比"></a>http版本的对比</h2><p><strong>HTTP1.0版本的特性：</strong><br>早先1.0的HTTP版本，是一种无状态、无连接的应用层协议。（短连接）<br>HTTP1.0规定浏览器和服务器保持短暂的连接，浏览器的每次请求都需要与服务器建立一个TCP连接，服务器处理完成后立即断开TCP连接（无连接），服务器不跟踪每个客户端也不记录过去的请求（无状态）。</p>
<p><strong>HTTP1.1版本新特性（长连接）：</strong><br>默认持久连接节省通信量，只要客户端服务端任意一端没有明确提出断开TCP连接，就一直保持连接，</p>
<p><strong>HTTP2.0版本的特性：</strong></p>
<ul>
<li>二进制分帧（采用二进制格式的编码将其封装）</li>
<li>首部压缩（设置了专门的首部压缩设计的HPACK算法。）</li>
<li>流量控制（设置了接收某个数据流的多少字节一些流量控制）</li>
<li>多路复用（可以在共享TCP链接的基础上同时发送请求和响应）</li>
<li>请求优先级（可以通过优化这些帧的交错和传输顺序进一步优化性能）</li>
<li>服务器推送（就是服务器可以对一个客户端请求发送多个响应。服务器向客户端推送资源无需客户端明确的请求。（重大更新）</li>
</ul>
<h2 id="常用状态码"><a href="#常用状态码" class="headerlink" title="常用状态码"></a><strong>常用状态码</strong></h2><p>200： 请求被正常处理<br>204： 请求被受理但没有资源可以返回<br>301： 永久性重定向<br>302： 临时重定向<br>304： 已缓存<br>400： 请求报文语法有误，服务器无法识别<br>403： 请求的对应资源禁止被访问<br>404： 服务器无法找到对应资源<br>500： 服务器内部错误<br>503： 服务器正忙</p>
<h2 id="HTTP协议中的请求方式"><a href="#HTTP协议中的请求方式" class="headerlink" title="HTTP协议中的请求方式"></a>HTTP协议中的请求方式</h2><ul>
<li>GET：用于请求访问已经被URI（统一资源标识符）识别的资源，可以通过URL传参给服务器</li>
<li>POST：用于传输信息给服务器，主要功能与GET方法类似，但一般推荐使用POST方式。</li>
<li>PUT： 传输文件，报文主体中包含文件内容，保存到对应URI位置。</li>
<li>HEAD：获得报文首部，与GET方法类似，只是不返回报文主体，一般用于验证URI是否有效。</li>
<li>PATCH： 客户端向服务器传送的数据取代指定的文档的内容(部分取代)</li>
<li>TRACE： 回显客户端请求服务器的原始请求报文，用于”回环”诊断</li>
<li>DELETE： 删除文件，与PUT方法相反，删除对应URI位置的文件。</li>
<li>OPTIONS： 查询相应URI支持的HTTP方法。</li>
</ul>
<h2 id="Session-与-Cookie-的对比"><a href="#Session-与-Cookie-的对比" class="headerlink" title="Session 与 Cookie 的对比"></a>Session 与 Cookie 的对比</h2><p>cookie：cookie是由Web服务器保存在用户浏览器上的文件（key-value格式），可以包含用户相关的信息。客户端向服务器发起请求时，会携带服务器端之前创建的cookie，服务器端通过cookie中携带的数据区分不同的用户。</p>
<p>session：session 是浏览器和服务器会话过程中，服务器会分配的一块储存空间给session。服务器默认会为客户浏览器的cookie中设置 sessionid，这个sessionid就和cookie对应，浏览器在向服务器请求过程中传输的cookie 包含 sessionid ，服务器根据传输cookie 中的 sessionid 获取出会话中存储的信息，然后确定会话的身份信息。</p>
<ul>
<li><strong>安全性：cookie数据存放在客户端上，安全性较差，session数据放在服务器上，安全性相对更高</strong></li>
<li><strong>大小限制：cookie有大小限制，单个cookie保存的数据不能超过4K，session无此限制，理论上只与服务器的内存大小有关；</strong></li>
<li><strong>服务器资源消耗：Session是保存在服务器端上会存在一段时间才会消失，当访问增多，对服务器性能有影响</strong></li>
<li><strong>实现机制：Session的实现常常依赖于Cookie机制，通过Cookie机制回传SessionID；</strong></li>
</ul>

      </section>
      <section class="extra">
        
          <ul class="copyright">
  
    <li><strong>本文作者：</strong>东子</li>
    <li><strong>本文链接：</strong><a href="https://comebackearly.gitee.io/2022/06/01/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/index.html" title="https:&#x2F;&#x2F;comebackearly.gitee.io&#x2F;2022&#x2F;06&#x2F;01&#x2F;%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C&#x2F;index.html">https:&#x2F;&#x2F;comebackearly.gitee.io&#x2F;2022&#x2F;06&#x2F;01&#x2F;%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C&#x2F;index.html</a></li>
    <li><strong>版权声明：</strong>本博客所有文章均采用 <a href="https://creativecommons.org/licenses/by-nc-sa/4.0/deed.zh" title="BY-NC-SA" target="_blank" rel="noopener">BY-NC-SA</a> 许可协议，转载请注明出处！</li>
  
</ul>
        
        
        
        
  <nav class="nav">
    <a href="/2022/06/02/java%E9%9B%86%E5%90%88%E6%80%BB%E7%BB%93/"><i class="iconfont iconleft"></i>java集合</a>
    <a href="/2018/08/20/%E5%B8%B8%E7%94%A8%E4%BB%A3%E7%A0%81/">常用代码<i class="iconfont iconright"></i></a>
  </nav>

      </section>
      
        <section class="comments">
  
    <div class="btn" id="comments-btn">查看评论</div>
  
  
<div id="valine"></div>
<script defer src="//unpkg.com/valine/dist/Valine.min.js"></script>
<script>
  window.onload = function () {
    var loadValine = function () {
      new Valine({
        el: '#valine',
        app_id: "833C0IwLe9o8QE1pN25Mv59F-gzGzoHsz",
        app_key: "YLQZdn7egrZOmJnwr6YFEw0y",
        placeholder: "雁过留痕",
        avatar: "mp",
        pageSize: "10",
        lang: "zh-CN",
      });
    }
    if ( true ) {
      $("#comments-btn").on("click", function () {
        $(this).hide();
        loadValine();
      });
    } else {
      loadValine();
    }
  };
</script>

</section>
      
    </section>
  </div>
</article></div>
      <div class="col-xl-3">
        
          
  <aside class="toc-wrap">
    <h3 class="toc-title">文章目录：</h3>
    <ol class="toc"><li class="toc-item toc-level-1"><a class="toc-link" href="#%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C"><span class="toc-text">计算机网络</span></a><ol class="toc-child"><li class="toc-item toc-level-2"><a class="toc-link" href="#%E5%90%84%E5%B1%82%E5%8D%8F%E8%AE%AE%E5%AF%B9%E5%AF%B9%E6%AF%94"><span class="toc-text">各层协议对对比</span></a><ol class="toc-child"><li class="toc-item toc-level-3"><a class="toc-link" href="#TCP%E4%B8%8EUDP"><span class="toc-text">TCP与UDP</span></a></li></ol></li><li class="toc-item toc-level-2"><a class="toc-link" href="#%E8%BF%90%E8%A1%8C%E5%9C%A8TCP%E5%8D%8F%E8%AE%AE%E4%B8%8A%E7%9A%84%E5%8D%8F%E8%AE%AE"><span class="toc-text">运行在TCP协议上的协议</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#%E8%BF%90%E8%A1%8C%E5%9C%A8UDP%E5%8D%8F%E8%AE%AE%E4%B8%8A%E7%9A%84%E5%8D%8F%E8%AE%AE"><span class="toc-text">运行在UDP协议上的协议</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#TCP%E7%9A%84%E4%B8%89%E6%AC%A1%E6%8F%A1%E6%89%8B"><span class="toc-text">TCP的三次握手</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#%E4%B8%BA%E4%BB%80%E4%B9%88%E8%A6%81%E4%B8%89%E6%AC%A1%E6%8F%A1%E6%89%8B%EF%BC%9A"><span class="toc-text">为什么要三次握手：</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#TCP%E7%9A%84%E5%9B%9B%E6%AC%A1%E6%8C%A5%E6%89%8B"><span class="toc-text">TCP的四次挥手</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#TCP-%E5%8D%8F%E8%AE%AE%E5%A6%82%E4%BD%95%E4%BF%9D%E8%AF%81%E5%8F%AF%E9%9D%A0%E4%BC%A0%E8%BE%93"><span class="toc-text">TCP 协议如何保证可靠传输</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#HTTP%E7%BD%91%E7%BB%9C%E5%8D%8F%E8%AE%AE"><span class="toc-text">HTTP网络协议</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#http%E7%89%88%E6%9C%AC%E7%9A%84%E5%AF%B9%E6%AF%94"><span class="toc-text">http版本的对比</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#%E5%B8%B8%E7%94%A8%E7%8A%B6%E6%80%81%E7%A0%81"><span class="toc-text">常用状态码</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#HTTP%E5%8D%8F%E8%AE%AE%E4%B8%AD%E7%9A%84%E8%AF%B7%E6%B1%82%E6%96%B9%E5%BC%8F"><span class="toc-text">HTTP协议中的请求方式</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#Session-%E4%B8%8E-Cookie-%E7%9A%84%E5%AF%B9%E6%AF%94"><span class="toc-text">Session 与 Cookie 的对比</span></a></li></ol></li></ol>
  </aside>

        
      </div>
    </div>
  </div>
</main>
  

<footer class="footer">
  <div class="footer-social"><a 
        href="tencent://message/?Menu=yes&uin=2911890696 "
        target="_blank"
        class="footer-social-item"
        onMouseOver="this.style.color= '#12B7F5'" 
        onMouseOut="this.style.color='#33333D'">
          <i class="iconfont  iconQQ "></i>
      </a><a 
        href="javascript:; "
        target="_blank"
        class="footer-social-item"
        onMouseOver="this.style.color= '#09BB07'" 
        onMouseOut="this.style.color='#33333D'">
          <i class="iconfont  iconwechat-fill "></i>
      </a><a 
        href="https://github.com/nuban "
        target="_blank"
        class="footer-social-item"
        onMouseOver="this.style.color= '#9f7be1'" 
        onMouseOut="this.style.color='#33333D'">
          <i class="iconfont  icongithub-fill "></i>
      </a></div>
  
    <div class="footer-copyright"><p>Powered by <a target="_blank" href="https://gitee.com/comebackearly">东子</a>  | 爷-青结~~</p></div>
  
  <link rel="stylesheet" href="/dist/APlayer.min.css">
  <div id="aplayer"></div>
  <script type="text/javascript" src="/dist/APlayer.min.js"></script>
  <script type="text/javascript" src="/dist/music.js"></script>
  
</footer>
  
      <div class="fab fab-plus">
    <i class="iconfont iconplus"></i>
  </div>
  
  
  
  <div class="fab fab-up">
    <i class="iconfont iconcaret-up"></i>
  </div>
  
  
  
    
<script src="/js/color-mode.js"></script>

  
  
</body>

<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>





  
<script src="https://cdn.bootcdn.net/ajax/libs/jquery.lazyload/1.9.1/jquery.lazyload.min.js"></script>




  
<script src="https://cdnjs.cloudflare.com/ajax/libs/fancybox/3.5.7/jquery.fancybox.min.js"></script>






  
<script src="https://cdn.bootcdn.net/ajax/libs/jquery.qrcode/1.0/jquery.qrcode.min.js"></script>




<script src="/js/utils.js"></script>
<script src="/js/script.js"></script>







  <script>
    (function () {
      var bp = document.createElement('script');
      var curProtocol = window.location.protocol.split(':')[0];
      if (curProtocol === 'https') {
        bp.src = 'https://zz.bdstatic.com/linksubmit/push.js';
      } else {
        bp.src = 'http://push.zhanzhang.baidu.com/push.js';
      }
      var s = document.getElementsByTagName("script")[0];
      s.parentNode.insertBefore(bp, s);
    })();
  </script>



  <script defer src='https://hm.baidu.com/hm.js?dda12e485d1b1d3113db8147f482111c'></script>











</html>